package ListNode;

/**
 * 1290. 二进制链表转整数
 * 给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。
 * <p>
 * 请你返回该链表所表示数字的 十进制值 。
 * <p>
 *  
 * <p>
 * 示例 1：
 * <p>
 * <p>
 * <p>
 * 输入：head = [1,0,1]
 * 输出：5
 * 解释：二进制数 (101) 转化为十进制数 (5)
 * 示例 2：
 * <p>
 * 输入：head = [0]
 * 输出：0
 * 示例 3：
 * <p>
 * 输入：head = [1]
 * 输出：1
 * 示例 4：
 * <p>
 * 输入：head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]
 * 输出：18880
 * 示例 5：
 * <p>
 * 输入：head = [0,0]
 * 输出：0
 */
public class GetDecimalValue {
    public static int getDecimalValue(ListNode head) {
        int res = 0;
        while (head != null) {
            res = res * 2 + head.val;
            head = head.next;
        }
        return res;
    }
    public static void main(String[] args){
        System.out.println(getDecimalValue(ListNode.createListNode(1,0,1)));
        System.out.println(getDecimalValue(ListNode.createListNode(0)));
        System.out.println(getDecimalValue(ListNode.createListNode(1)));
        System.out.println(getDecimalValue(ListNode.createListNode(1,0,0,1,0,0,1,1,1,0,0,0,0,0,0)));
        System.out.println(getDecimalValue(ListNode.createListNode(0,0)));
    }
}
